package HW1;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/*

 使用 List 集合实现简易的学生信息管理系统，要求打印字符界面提示用户选择相应的功 能，根据用户输入的选择去实现增加、删除、修改、查找以及遍历所有学生信息的功能。

 其中学生的信息有：学号、姓名、年龄。 要求： 尽量将功能拆分为多个.java 文件。

 */
public class HW4 {
        public static void main(String[] args){

            List<Student> list = new ArrayList();//全局变量，保持每次操控的是同一个集合
            //从文件读数据
            try {
                fileInput(list);
            } catch (Exception e) {
                e.printStackTrace();
            }

            Scanner sc = new Scanner(System.in);
            while(true){

                System.out.println("请按照提示输入数字查询你所需要的功能:");
                System.out.println("1,查看所有学生信息。2,根据学号查找某个学生的信息。3,根据学号删除某个学生的信息。");
                System.out.println("4,添加一个学生信息。5,根据学号修改某个学生的信息。6,退出。");

                switch (sc.nextInt()){
                    case 1:

                        ShowStudents.findStudents(list);
                        break;
                    case 2:
                        SearchStudents.search(list);
                        break;
                    case 3:
                        DeleteStudents.deledteStudents(list);
                        break;
                    case 4:
                        AddStudents.add(list);
                        break;
                    case 5:
                        try {
                            EditStudents.editStudents(list);
                        } catch (StudentAgeException e) {
                            e.printStackTrace();
                        }
                        break;
                    case 6:
                        try {
                            fileOutput(list);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        System.exit(0);
                        break;
                    default:
                        System.out.println("请按照提示输入！");
                        break;
                }
            }

        }
        //输出list到文件中
        public static void fileOutput(List<Student> list) throws Exception{
            //文件路径
            File f = new File("/Users/mac/Desktop/student.txt");
            //输出流
            BufferedWriter bw = new BufferedWriter(new FileWriter(f));
            //遍历list，写入到文件
            for(Student s: list){
                bw.write(s.getName() + "/" + s.getId() + "/" + s.getAge() + "\r\n");
            }
            System.out.println("写入成功");
            bw.close();
        }

        //将list写入到文件中
        public static void fileInput(List<Student> list) throws Exception{
            //文件路径
            File f = new File("/Users/mac/Desktop/student.txt");
            //输入流
            BufferedReader br = new BufferedReader(new FileReader(f));
            //一行一行读文件的内容，通过"/"符号拆分存到数组，然后添加到list中
            String line = null;
            System.out.println("从student.txt文件中读取数据");
            while((line = br.readLine())!=null){
                System.out.println(line);
                String[] s = line.split("/");
                int id = Integer.parseInt(s[2]);
                Student student =  new Student(s[1],s[0],id);
                list.add(student);
            }

            br.close();
        }

}
